import os
from typing import Optional
from services.token_service import TokenService
import logging

logger = logging.getLogger(__name__)


class ConfigManager:
    """配置管理器"""

    @classmethod
    async def get_token(
        cls, token_key: str, default: Optional[str] = None
    ) -> Optional[str]:
        """
        获取Token配置，优先从数据库读取，失败时回退到环境变量

        Args:
            token_key: Token键名
            default: 默认值

        Returns:
            Token值
        """
        try:
            # 先尝试从数据库获取
            db_token = await TokenService.get_token(token_key)
            if db_token:
                logger.debug(f"从数据库获取Token成功: {token_key}")
                return db_token

            # 数据库中没有，尝试从环境变量获取
            env_token = os.getenv(token_key, default)
            if env_token:
                logger.warning(f"从环境变量获取Token: {token_key}")
                return env_token

            logger.error(f"未找到Token配置: {token_key}")
            return default

        except Exception as e:
            logger.error(f"获取Token配置异常: {token_key}, 错误: {str(e)}")
            # 异常时回退到环境变量
            return os.getenv(token_key, default)
